﻿using System;
using System.Globalization;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using bolsatrabajo.Dominio.NHIBERNATE;
using bolsatrabajo.Persistencia.NHIBERNATE;

namespace bolsatrabajo.Pruebas.NHIBERNATE
{
    [TestFixture]
    public class pruebaPostulacionNH
    {
        [Test]
        public void TestCrearPostulacion()
        {
            PostulacionNH postulacionNH = new PostulacionNH(); // Instanciando la clase a probar
            // Creando un objeto en memoria para luego persistirlo en la BD
            Postulacion postulacionACrear = new Postulacion();
            postulacionACrear.DescripcionPostulante = "LA TREMENDA";
            AvisoNH existeaviso = new AvisoNH();
            Aviso avisoexiste = existeaviso.Obtener(10118);
            postulacionACrear.Aviso = avisoexiste;
            PostulanteNH existepostulante = new PostulanteNH();
            Postulante postulanteexiste = existepostulante.Obtener("yvette@gmail.com");
            postulacionACrear.Postulante = postulanteexiste;
            postulacionACrear.FechaRegistro = DateTime.Parse("07/06/2011");
            postulacionACrear.Seleccionado = false;
            Postulacion postulacionCreada = null; // Declarando el objeto que contendrá el registro creado en la BD
            Assert.DoesNotThrow(delegate // Asegurando que el "cuerpo" no lance excepciones
            {
                postulacionCreada = postulacionNH.Crear(postulacionACrear); // Ejecutando el método de creación
            });
            Assert.AreEqual(postulacionACrear.Id_Postulacion, postulacionCreada.Id_Postulacion); // Asegurando que el código del alumno ya creado sea igual al código del alumno en memoria que solicité crear
        }

        [Test]
        public void TestListarPostulacionessxPostulante()
        {
            String correopostulanteafiltrar = "hhggfox@gmail.com";
            PostulacionNH listaNH = new PostulacionNH();
            ICollection<Postulacion> listaobtenida = null;
            Assert.DoesNotThrow(delegate
            {
                listaobtenida = listaNH.ListarPostulacionesxPostulante(correopostulanteafiltrar);
            });
            //CollectionAssert.IsNotEmpty(listaobtenida);
            Assert.Greater(listaobtenida.Count, 0);
            foreach (Postulacion o in listaobtenida)
            {
                Console.WriteLine(o.DescripcionPostulante + "|" + o.Id_Postulacion);
            }
        }
    }
}